mysql存储视频 |
您所在的位置:网站首页 › mysql 读取文件 › mysql存储视频 |
问题描述:一般网站,对于用户上传的图片、视频、声音等特殊格式的数据是以本地文件的形式存储,然后把相应URL路径存放在数据库里呢;还是,将数据直接写到数据库里存放? 答:多数网站,基本上采用的是第一种方式,即:文件存储+URL路径的模式。 首先,视频、声音、图片为非结构化数据,传统的关系型数据库主要是是针对结构化数据设计的,虽然有相应的字段格式支持存储,即:如果要把视频等文件存储到数据库的话,要使用大字段(例如:Oracle,Mysql中的 数据库里可以直接写入上述特殊数据,但这种存储方式对于用户请求过程有明显的缺点,占内存、速度慢、效率不高,会耗费较大的数据库资源;因为用户每次请求数据的时候,需要先访问数据库,从数据库中查询到相关文件,然后将文件以数据流的方式读到数据库内存,最后返回给用户,这时就需要你的系统要有较大的内存,比较快的读取速度,另外还会一定程度上影响数据库的一些查询性能。比如:数据库表中如果添加用于存放视频格式的二进制字段后,即使相应的二进制字段为NULL,查询的时候不查询该二进制字段,查询速度仍然会下降很多,这种情况下想通过优化SQL语句提高性能,收效胜微。 说了这么多,是不是选择 直接存在数据库就一定不好呢,其实不然! 将视频、图片等格式的数据存放在数据库的话,也有一定的好处,比如: 比较容易去重,可以将多余重复的数据利用SQL语句过滤删除,操作方便 备份的时候,使用数据库的备份方式简单。(当然这也是相对的,数据的存储越大,恢复越麻烦。) 3. 相较与原生存储 更加安全(增加了数据库的一层保护) 那么,什么样的业务场景适合直接存放在数据库中? 如果是一个小型的网站,像论坛等,平时用户上传、请求的该类特殊数据比较少,而又注重上述这种方式的优点的话,可以采用。 总结: 大多数情况下,如果要存储图片、文件、视频等大文件对象,建议存成本地文件(提高性能的话采用分布式存储),不建议直接存储到数据库中;对于目前主流的视频网站,如何存放视频文件呢?可以参考 附:Mysql数据库中存入视频格式文件测试 创建一个测试表test,使用longblob或者mediumblob CREATE TABLE test (id INTEGER NOT NULL PRIMARY KEY,name VARCHAR (20),movie LONGBLOB); 然后把视频文件导入 INSERT INTO test VALUES(1, 'titanic', LOAD_FILE("/tmp/good.mp4")); 注意,如果不使用longblob可能出现以下错误 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |